package wetogether.travelinfo.service;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import wetogether.travelinfo.dao.InputTravelInfoDAO;
import wetogether.travelinfo.dao.OutputTravelInfoDAO;
import wetogether.travelinfo.dao.UpdateTravelInfoDAO;
import wetogether.travelinfo.vo.TravelCommentVO;
import wetogether.travelinfo.vo.TravelFrVO;
import wetogether.travelinfo.vo.TravelInfoVO;
import wetogether.travelinfo.vo.TravelVacancyVO;
import wetogether.travelinfo.vo.TravelZoneVO;

public class UpdateTravelInfoServiceImpl implements UpdateTravelInfoService {
	private UpdateTravelInfoDAO updateTravelInfoDAO;
	private OutputTravelInfoDAO outputTravelInfoDAO;
	public void setUpdateTravelInfoDAO(UpdateTravelInfoDAO updateTravelInfoDAO){
		this.updateTravelInfoDAO=updateTravelInfoDAO;
		System.out.println("UpdateTravelInfoDAO injection....");
	}
	public void setOutputTravelInfoDAO(OutputTravelInfoDAO outputTravelInfoDAO){
		this.outputTravelInfoDAO=outputTravelInfoDAO;
		System.out.println("OutputTravelInfoDAO injection....");
	}
	/////////////////////////////////////////////////////////
	// 1. Output 정보값 가져오기
	///////////////////////////////////////////////////////////
	/**
	 * 존재하는 지역 리스트값을 받아온다
	 */
	@Override
	public List<TravelZoneVO> findTravelZoneList() throws SQLException {
		return outputTravelInfoDAO.findTravelZoneList();
	}
	/**
	 * 해당 지역에 존재하는 여행지 리스트값을 받아온다.
	 */
	@Override
	public List<String> findTravelPlaceList(int locationid)
			throws SQLException {
		return outputTravelInfoDAO.findTravelPlaceList(locationid);
	}
	/**
	 * 해당 지역 정보를 가져온다
	 */
	public TravelZoneVO getTravelZone(int locationid) throws SQLException {
		return outputTravelInfoDAO.getTravelZone(locationid);
	}
	/**
	 * 해당 여행지의 정보를 가져온다
	 */
	@Override
	public TravelInfoVO getTravelInfo(String place) throws SQLException {
		return outputTravelInfoDAO.getTravelInfo(place);
	}
	/**
	 * 해당 여행지의 이미지리스트를 가져온다
	 */
	@Override
	public List<String> getPlaceImageList(String place) throws SQLException {
		return outputTravelInfoDAO.getPlaceImageList(place);
	}
	/**
	 * 해당 여행지의 숙박 리스트를 가져온다
	 */
	@Override
	public List<TravelVacancyVO> getPlaceVacancyList(String place)
			throws SQLException {
		return outputTravelInfoDAO.getPlaceVacancyList(place);
	}
	/**
	 * 해당 여행지의 맛집 리스트를 가져온다
	 */
	@Override
	public List<TravelFrVO> getPlaceFrList(String place) throws SQLException {
		return outputTravelInfoDAO.getPlaceFrList(place);
	}
	/**
	 * 해당 여행지의 댓글 리스트를 가져온다
	 */
	@Override
	public List<TravelCommentVO> getPlaceCommentList(String place)
			throws SQLException {
		return outputTravelInfoDAO.getPlaceCommentList(place);
	}
	/**
	 * 회원 본인의 댓글을 가져온다.
	 */
	@Override
	public TravelCommentVO getPlaceComment(TravelCommentVO commentVO)
			throws SQLException {
		return outputTravelInfoDAO.getPlaceComment(commentVO);
	}
	/////////////////////////////////////////////////////////
	// 2. Update 새로 입력 받은 값으로 수정하기
	///////////////////////////////////////////////////////////
	/**
	 * 0. 해당 지역의 정보를 수정한다.
	 */
	public void updateTravelZone(TravelZoneVO zoneVO) throws SQLException {
		updateTravelInfoDAO.updateTravelZone(zoneVO);
	}
	/**
	 * 1. 해당 여행지의 정보를 수정한다.
	 */
	@Override
	public void updateTravelInfo(TravelInfoVO tVO) throws SQLException {
		updateTravelInfoDAO.updateTravelInfo(tVO);
	}
	/**
	 * 2. 여행지의 이미지 정보를 수정한다.
	 */
	@Override
	public void updatePlaceImage(Map map) throws SQLException {
		updateTravelInfoDAO.updatePlaceImage(map);
	}
	/**
	 * 3. 여행지의 숙박 정보를 수정한다.
	 */
	@Override
	public void updatePlaceVacancy(TravelVacancyVO vacancyVO)
			throws SQLException {
		updateTravelInfoDAO.updatePlaceVacancy(vacancyVO);
	}
	/**
	 * 4. 여행지의 맛집 정보를 수정한다.
	 */
	@Override
	public void updatePlaceFr(TravelFrVO frVO) throws SQLException {
		updateTravelInfoDAO.updatePlaceFr(frVO);
	}
	/**
	 * 5. 여행지의 공지사항을 수정한다.
	 */
	@Override
	public void updatePlaceNotice(TravelInfoVO tVO) throws SQLException {
		updateTravelInfoDAO.updatePlaceNotice(tVO);
	}
	/**
	 * 6. 여행지 회원의 댓글을 수정한다.
	 */
	@Override
	public void updatePlaceComment(TravelCommentVO commentVO)
			throws SQLException {
		updateTravelInfoDAO.updatePlaceComment(commentVO);
	}
}
